package com.dapeng.cleardatabackend.model.dto.graph;

import com.dapeng.cleardatabackend.model.enums.MatchModeEnum;
import com.dapeng.cleardatabackend.model.enums.SearchModeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @author dapeng
 * @description 查看图谱请求
 * @date 2024/12/22 22:24
 */
@Data
@ApiModel(description = "查看图谱请求")
public class GraphSearchRequest implements Serializable {

    private static final long serialVersionUID = 431319699180079952L;

    /**
     * 图谱id
     */
    @ApiModelProperty(value = "图谱id")
    @NotNull(message = "图谱id不能为空")
    private Long id;


    /**
     * 查询模式 0-节点 1-关系 2-标签 3-节点和关系
     */
    @ApiModelProperty(value = "查询模式 0-节点 1-关系 2-标签 3-节点和关系", dataType = "java.lang.Integer")
    private SearchModeEnum searchMode;

    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字")
    private String keyword;

    /**
     * 前键名称
     */
    @ApiModelProperty(value = "前键名称")
    private String startText;

    /**
     * 关系名称
     */
    @ApiModelProperty(value = "关系名称")
    private String relationText;

    /**
     * 后键名称
     */
    @ApiModelProperty(value = "后键名称")
    private String endText;


    /**
     * 匹配模式 0-模糊 1-精确
     */
    @ApiModelProperty(value = "匹配模式 0-模糊 1-精确", dataType = "java.lang.Integer")
    private MatchModeEnum matchMode;

    /**
     * 路径长度
     */
    @ApiModelProperty(value = "路径长度", dataType = "java.lang.Integer", required = true)
    @NotNull(message = "路径长度不能为空")
    @Max(value = 6, message = "路径长度不能大于6")
    @Min(value = 1, message = "路径长度不能小于1")
    private Integer pathLength;

    /**
     * 路径数量
     */
    @ApiModelProperty(value = "路径数量", dataType = "java.lang.Integer", required = true)
    @NotNull(message = "路径数量不能为空")
    @Max(value = 300, message = "路径数量不能大于300")
    @Min(value = 1, message = "路径数量不能小于1")
    private Integer pathCount;
}
